home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / visulztn / saoimage / saoimage.lha / hfiles / cursor.h < prev    next >
C/C++ Source or Header  |  1989-11-17  |  3KB  |  83 lines

  1. #ifndef lint
  2. static char SccsCursorId[] = "%W%  %G%";
  3. #endif
  4.  
  5. /* Module:    Cursor.h
  6.  * Purpose:    Define the structs for cursor manipulation parameters
  7.  * Modified:    {0} Michael VanHilst    initial version          3 June 1989
  8.  *        {n} <who> -- <does what> -- <when>
  9.  */
  10.  
  11. /* get Color declaration if it is not already defined (for GCspec) */
  12. #ifndef COLMAPSZ
  13. #include "color.h"
  14. #endif
  15.  
  16. #define XSIDE 1            /* codes for sizing on one dimension only */
  17. #define YSIDE 2
  18. #define XYCORNER 3        /* code for sizing by a corner (both axes) */
  19.  
  20. /* maximum number of points for drawing things (beginning repeated at end) */
  21. #define CURSOR_MAX 80
  22.  
  23. /* file coordinates */
  24. typedef struct _CurFCoord {
  25.   float X, Y;                /* center dimension (or other ref) */
  26.   float Xdim, Ydim;            /* dimension appropriate to type */
  27.   double area;                /* area if computed */
  28. } CurFCoord;
  29.  
  30. /* display window coordinates */
  31. typedef struct _CurWCoord {
  32.   Display *display;            /* display where draw */
  33.   Window ID;                /* drawable where to draw */
  34.   int x, y;                /* integer center coordinates */
  35.   double X, Y;                /* float center coordinates */
  36.   double rayX, rayY;            /* center to side distance */
  37. } CurWCoord;
  38.  
  39. /* rotation angle parameters */
  40. typedef struct _CurRot {
  41.   double angle;                /* rotation angle in radians */
  42.   double sin, cos;            /* sin and cos of angle */
  43.   double cut_A, cut_B;            /* angles of pie cut */
  44. } CurRot;
  45.  
  46. /* parameters used for manipulation */
  47. typedef struct _CurCtrl {
  48.   int active_vertex;            /* index of vertex being maniputated */
  49.   int active_side;            /* sizing of x dim, y dim, or both */
  50.   double axis_ratio;            /* fixed ratio of Xdim and Ydim */
  51. } CurCtrl;
  52.  
  53. /* brief parameter set for vertex of polygon */
  54. typedef struct _PolyPoint {
  55.   float winX, winY;            /* int coordinates of point */
  56.   float fileX, fileY;            /* file coordinates */
  57.   int unset;                /* display point has been moved */
  58. } PolyPoint;
  59.  
  60. /* main structure */
  61. struct cursorRec {
  62.   CurFCoord file;            /* file coordinates */
  63.   CurWCoord win;            /* window coordinates */
  64.   CurRot rot;                /* rotation angle parameters */
  65.   CurCtrl ctrl;                /* interactive control parameters */
  66.   int type;                /* type (code in Constant.h) */
  67.   int cut;                /* apply-pie-cut flag */
  68.   int label_point;            /* label-the-point flag */
  69.   int overwrites_image_data;        /* cursor-overwrites-image-data */
  70.   int index;                /* index for regions and annuli */
  71.   int exclude_region;            /* region type and suppress drawing */
  72.   int point_cnt;            /* number of points for XDrawLines */
  73.   XPoint *points;            /* absolute-coord drawing vertices */
  74.   int rectangle_cnt;            /* number of hash-mark boxes */
  75.   XRectangle *rectangles;        /* for XDrawRectangles */
  76.   int poly_cnt;                /* number of vertices in polygon */
  77.   PolyPoint *poly;            /* array of polygon vertex coords */
  78.   int annuli;                /* annuli of this type */
  79.   struct cursorRec *next_annulus;    /* annulus linklist */
  80.   struct cursorRec *next_region;    /* region linklist */
  81.   GCspec *draw;                /* color set to draw this cursor */
  82. };
  83.